Cross application behavior customization

ABSTRACT

The example embodiments are directed to an application hub system and method configured to add a tenant-specific script to running instances of a plurality of independently developed software applications thereby customizing the behavior of the plurality of independently developed software applications through a single action. In one example, the method includes receiving a request to load an application hub interface associated with running instances of a plurality of software applications, determining at least one script to be used to customize a behavior of the running instances of the plurality of software applications, adding the at least one script to each of the running instances of the plurality of software applications via the application hub interface, and displaying a user interface associated with the application hub interface which provides access to the customized running instances of the plurality of software applications.

BACKGROUND

Machine and equipment assets are engineered to perform particular tasksas part of a process. For example, assets can include, among otherthings and without limitation, industrial manufacturing equipment on aproduction line, drilling equipment for use in mining operations, windturbines that generate electricity on a wind farm, transportationvehicles, and the like. As another example, assets may include devicesthat aid in diagnosing patients such as imaging devices (e.g., X-ray orMRI systems), monitoring equipment, and the like. The design andimplementation of these assets often takes into account both the physicsof the task at hand, as well as the environment in which such assets areconfigured to operate.

Low-level software and hardware-based controllers have long been used todrive machine and equipment assets. However, the rise of inexpensivecloud computing, increasing sensor capabilities, and decreasing sensorcosts, as well as the proliferation of mobile technologies, have createdopportunities for creating novel industrial and healthcare based assetswith improved sensing technology and which are capable of transmittingdata that can then be distributed throughout a network. As aconsequence, there are new opportunities to enhance the business valueof some assets through the use of novel industrial-focused hardware andsoftware.

One of the obstacles in designing a computing platform that supportsmachine and equipment focused software is the wide variety of softwarethat can be of interest for a tenant. For example, a power plantoperator may be interested in looking at many software and hardwarecomponents related to the plant in order to manage/view various systems,sub-systems, and applications associated therewith, includinggenerators, cooling towers, a plant floor, materials, alerts, fuelusage, power protection, power distribution, control systems, analytics,and/or the like. In order to monitor and control these components,independently developed and distinct applications offered by differentvendors and running on different systems are often required. As aresult, the operator must access different systems and applications inorder to view and interact with the different applications. However,managing the behaviors of these application can be a time-consuming andtedious operation requiring a developer or a tenant to make changes onan application-by-application basis.

SUMMARY

The example embodiments improve upon the prior art by incorporatingtenant-specific scripts across a plurality of independently developedsoftware applications through the use of a centralized application hub.Ordinarily, a developer would have to manually modify each softwareapplication in order to attempt to effectuate consistent changes acrossa plurality of microapps, which raises issues with consistency,compatibility and user error. In contrast, the centralized applicationhub of the example embodiments can load a script or an array of scriptsacross a plurality of independently developed software applicationsthereby causing tenant-specific (or in some case user-specific)libraries and other behaviors to be made consistently available acrosseach of the plurality of independently developed software applications.In doing so, a developer can ensure that common behaviors, libraries, orother functions are available across each of a plurality of distinctsoftware applications in an efficient and centralized manner.

According to an aspect of an example embodiment, a method includes oneor more of receiving a request to load an application hub interfaceassociated with running instances of a plurality of softwareapplications, determining at least one script to be used to customize abehavior of the running instances of the plurality of softwareapplications, adding the at least one script to each of the runninginstances of the plurality of software applications via the applicationhub interface, and displaying a user interface associated with theapplication hub interface which provides access to the customizedrunning instances of the plurality of software applications.

According to an aspect of another example embodiment, a computing systemincludes one or more of a memory storing one or more software modules,and a processor configured to execute the one or more software modules.When executed, the one or more software modules cause the processor toreceive a request to load an application hub interface associated withrunning instances of a plurality of software applications, determine atleast one script to be used to customize a behavior of the runninginstances of the plurality of software applications, add the at leastone script to each of the running instances of the plurality of softwareapplications via the application hub interface, and display a userinterface associated with the application hub interface which providesaccess to the customized running instances of the plurality of softwareapplications

Other features and aspects may be apparent from the following detaileddescription taken in conjunction with the drawings and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Features and advantages of the example embodiments, and the manner inwhich the same are accomplished, will become more readily apparent withreference to the following detailed description taken in conjunctionwith the accompanying drawings.

FIG. 1 is a diagram illustrating a cloud computing environmentassociated with an application hub in accordance with an exampleembodiment.

FIG. 2 is a diagram illustrating an application hub user interface inaccordance with an example embodiment.

FIG. 3 is a diagram illustrating an application hub architecture inaccordance with example embodiments.

FIG. 4 is a diagram illustrating a method for customizing a plurality ofapplications via an application hub interface in accordance with anexample embodiment.

FIG. 5 is a diagram illustrating a computing system for customizing aplurality of applications via an application hub interface in accordancewith an example embodiment.

Throughout the drawings and the detailed description, unless otherwisedescribed, the same drawing reference numerals will be understood torefer to the same elements, features, and structures. The relative sizeand depiction of these elements may be exaggerated or adjusted forclarity, illustration, and/or convenience.

DETAILED DESCRIPTION

In the following description, specific details are set forth in order toprovide a thorough understanding of the various example embodiments. Itshould be appreciated that various modifications to the embodiments willbe readily apparent to those skilled in the art, and the genericprinciples defined herein may be applied to other embodiments andapplications without departing from the spirit and scope of thedisclosure. Moreover, in the following description, numerous details areset forth for the purpose of explanation. However, one of ordinary skillin the art should understand that embodiments may be practiced withoutthe use of these specific details. In other instances, well-knownstructures and processes are not shown or described in order not toobscure the description with unnecessary detail. Thus, the presentdisclosure is not intended to be limited to the embodiments shown, butis to be accorded the widest scope consistent with the principles andfeatures disclosed herein.

The example embodiments are directed to a system and method whichfacilitate multi-application customization through a central hub scriptor theming setting. The central hub is referred to herein as anapplication hub and it provides a user or a group of users (alsoreferred to as a tenant) with access to running instances of multipleindependently developed software applications through a common userinterface. The application hub itself may also be an instance and may behosted by a cloud-based platform that is designed for building andoperating industrial-based applications for the Industrial Internet. Insome examples, the cloud platform may be built on Cloud Foundry, and maybe further optimized for secure connectivity and analytics for a networkof systems and software between the cloud platform and an edge thereof.

The cloud platform may store and provide access to differentapplications developed by different and distinct vendors. Theapplications (also referred to as microapps) may be independentlydeveloped by different vendors and may be used to analyze, control, orotherwise interact with industrial and healthcare based systemsincluding machine and equipment assets. A tenant or a user group may beauthorized to use a subset of these applications. The application hubmay be tenant-specific and may encapsulate running instances of thesubset of applications authorized for use by the tenant. The applicationhub may include a wrapper or a shell that provides a unified interfaceenabling secure access to the running instances of the subset ofapplications. The application hub may perform authentication on behalfof the tenant with each of the subset of applications, provide commonlook and feel, may further provide a global navigation menu that allowsa user to easily and efficiently navigate between the subset ofapplications running on the cloud platform and may provide other commonfeatures to unify the subset of applications as required.

To provide customized behaviors that cross over to differentindependently developed microapps, the app hub user interface mayincorporate tenant-specific scripts (e.g., JavaScript, etc.) across therunning instances of the microapps via the centralized application hub.Ordinarily, a developer would have to manually modify each softwareapplication in order to effectuate consistent changes across a pluralityof software application. In contrast, the application hub is centralizedand can load a script or an array of scripts based through aconfiguration setting thereof. The script may be provided from atenant-specific configuration file that the application hub accessesduring loading of the application hub user interface. During the loadingprocess, the application hub may determine whether the tenant has anycustomized scripts and implement the scripts across a plurality ofindependently developed microapps thereby causing tenant specificlibraries and other behaviors to be made consistently available acrosseach of the microapps. In doing so, a developer can ensure that certainbehaviors and functions are available within each of a plurality ofdistinct software applications through the central setting of theapplication hub and without having to manually modify each softwareapplication.

The way the architecture works, it doesn't necessarily have to return acommon set of scripts and themes for all users that are part of thetenant. Here, the tenant may specify a configuration server, but theserver could return different scripts (or themes as further discussedbelow) based on a user of the tenancy that is requesting the scripts andthemes, as well. For example, different users could be selected to havedifferent themes and/or different scripts and libraries. For example, anadmin user may have a different set of scripts than a non-admin userthat are part of a same tenancy, and the like. Accordingly,customization of the behaviors of microapps can be modified on aper-user basis within a group of users that make up the tenant.

As another example, the application hub user interface may incorporate acustom theme across both a display of the application hub user interfaceand the display of the running instances of a plurality of independentlydeveloped software applications. The customized theme may be providedfrom another global or central setting included within the applicationhub and may be provided from the tenant-specific configuration file thatthe application hub accesses during loading of the application hub userinterface. By implementing a custom theme across the plurality ofindependently developed software applications through the central hub,the tenant is able to establish a common look and feel to each of thedistinct software applications thereby simplifying and improving theuser experience. For example, through the theming, the tenant can modifyhow menus are displayed (e.g., top-down, etc.), colors, logos,backgrounds, and the like, of the user interface and the runninginstances of the microapps.

In an industrial or other computing environment, independent developedsoftware applications may be stored in a cloud platform and may behosted by different and distinct vendors and/or have different subsetsof users authorized for use thereof. As a result, each application mayrequire its own distinct authentication process. The application hub mayperform an authentication process on behalf of a tenant/user and provideauthentication information of the user when the user navigates to theapplications via the application hub user interface. For example, anidentity provider (e.g., a UAA) that communicates with the applicationhub may authenticate a user. In this example, when an unauthenticateduser attempts to access the application hub, the application hub canredirect the user to the identity provider to verify the user. When theidentity of the user is verified, the identity provider may return theuser back to the application hub, and in response, the application hubmay retrieve a token corresponding to the user from a secure storage(e.g., a Redis server). The token may be used to access a configurationfile that is tenant-specific and which may include information aboutapplications authorized for use by the user/tenant, and the like. Thetoken may not be exposed to the user but may remain hidden between theapplication hub, the secure server, and the applications. The token mayalso be stored by the application hub for future reference.

A request for navigating to an application may be submitted by anauthenticated user through the application hub. In response, theapplication hub may attach that token to the request (i.e., in a header)and transmit the request along with the token to the running instance ofthe application (e.g., such as a host device of the application). Eachapplication may expect to receive the token of the authenticated userduring an access request, and may deny service to any request that doesnot include the token. Furthermore, the token server may control how andwhen the user is logged out of the application hub. For example, thetoken server may set an expiry for a token (e.g., 12 hours).Furthermore, each subsequent authentication process between the user andanother application or microapp may be performed by the application hubwithout requiring user interaction during the authentication process.Accordingly, the application hub may act as a central authority forauthenticating a user with many different applications and/or vendors.In the examples provided herein, a UAA is used for authenticating theuser, but a different login mechanism could be used, for example,Twitter, Facebook, or any other means of authentication.

While progress with industrial and machine automation has been made overthe last several decades, and assets have become ‘smarter,’ theintelligence of any individual asset pales in comparison to intelligencethat can be gained when multiple smart devices are connected together,for example, in the cloud. Aggregating data collected from or aboutmultiple assets can enable users to improve business processes, forexample by improving effectiveness of asset maintenance or improvingoperational performance if appropriate industrial-specific datacollection and modeling technology is developed and applied.

Assets can be outfitted with one or more sensors configured to monitorrespective operations or conditions. Data from the sensors can berecorded or transmitted to a cloud-based or other remote computingenvironment. By bringing such data into a cloud-based computingenvironment, new software applications informed by industrial process,tools and know-how can be constructed, and new physics-based analyticsspecific to an industrial environment can be created. Insights gainedthrough analysis of such data can lead to enhanced asset designs,enhanced software algorithms for operating the same or similar assets,better operating efficiency, and the like.

The application hub may be used in conjunction with applications formanaging machine and equipment assets and can be hosted within anIndustrial Internet of Things (IIoT). In an example, an IIoT connectsassets, such as turbines, jet engines, locomotives, healthcare devices,and the like, to the Internet or cloud, or to each other in somemeaningful way such as through one or more networks. The centralapplication hub described herein can be implemented within a “cloud” orremote or distributed computing resource. The cloud can be used toreceive, relay, transmit, store, analyze, or otherwise processinformation for or about assets. In an example, a cloud computing systemincludes at least one processor circuit, at least one database, and aplurality of users or assets that are in data communication with thecloud computing system. The cloud computing system can further includeor can be coupled with one or more other processor circuits or modulesconfigured to perform a specific task, such as to perform tasks relatedto asset maintenance, analytics, data storage, security, or some otherfunction.

However, the integration of machine and equipment assets with the remotecomputing resources to enable the IIoT often presents technicalchallenges separate and distinct from the specific industry and fromcomputer networks, generally. A given asset may need to be configuredwith novel interfaces and communication protocols to send and receivedata to and from distributed computing resources. Given assets may havestrict requirements for cost, weight, security, performance, signalinterference, and the like such that enabling such an interface israrely as simple as combining the asset with a general-purpose computingdevice. To address these problems and other problems resulting from theintersection of certain industrial fields and the IIoT, the exampleembodiments provide an application hub user interface for facilitatingcommunication with and configuration of assets via remote computingplatforms and frameworks.

The Predix™ platform available from GE is a novel embodiment of such anAsset Management Platform (AMP) technology enabled by state of the artcutting edge tools and cloud computing techniques that enableincorporation of a manufacturer's asset knowledge with a set ofdevelopment tools and best practices that enables asset users to bridgegaps between software and operations to enhance capabilities, fosterinnovation, and ultimately provide economic value. Through the use ofsuch a system, a manufacturer of industrial or healthcare based assetscan be uniquely situated to leverage its understanding of assetsthemselves, models of such assets, and industrial operations orapplications of such assets, to create new value for industrialcustomers through asset insights.

FIG. 1 illustrates a cloud computing environment 100 associated withindustrial systems in accordance with an example embodiment. Referringto FIG. 1, the cloud computing environment 100 includes an asset farm110 which may be a group of assets (e.g., hardware, software, etc.) foruse in manufacturing and industry. The environment 100 further includesa cloud computing system 120 and one or more user devices 130. An assetmanagement platform (AMP) can reside in cloud computing system 120, in alocal or sandboxed environment, or can be distributed across multiplelocations or devices and can be used to interact with assets 110. TheAMP can be configured to perform any one or more of data acquisition,data analysis, or data exchange with local or remote assets 110, or withother task-specific processing devices. The AMP may be connected to anasset community 110 (e.g., turbines, healthcare, power, industrial,manufacturing, etc.) that is communicatively coupled with the cloudcomputing system 120. Also, the cloud computing system 120 may includeseveral layers, for example, a data infrastructure layer, a cloudfoundry layer, and modules for providing various functions.

The user device 130 (e.g., smart phone, workstation, tablet, appliance,kiosk, and the like) may display a centralized application hub userinterface described herein which can be configured for datacommunication with the cloud computing system 120. The user device 130can be used to monitor or control one or more assets 110, for example,via the application hub user interface. In an example, information aboutthe asset community 110 may be presented to an operator at the userdevice 130 from the cloud computing system 120. For example, the userdevice 130 can include options for optimizing one or more members of theasset community 110 based on analytics performed at the cloud computingsystem 120.

In some embodiments, the cloud computing system 120 may include a local,system, enterprise, or global computing infrastructure that can beoptimized for industrial data workloads, secure data communication, andcompliance with regulatory requirements. The cloud computing system 120can include services that developers can use to build or test IndustrialInternet applications, and services to implement Industrial Internetapplications. For example, the cloud computing system 120 may host amicroservices marketplace where developers can publish their distinctservices and/or retrieve services from third parties. In addition, thecloud computing system 120 can host a development framework forcommunicating with various available services or modules. Thedevelopment framework can offer distinct developers a consistentcontextual user experience in web or mobile applications. Developers canadd and make accessible their applications (services, data, analytics,etc.) via the cloud computing system 120.

Information from an asset 110, about the asset 110, or sensed by anasset 110 itself may be communicated from the asset 110 to the cloudcomputing system 120. In an example, an external sensor can be used tosense information about a function of an asset 110, or to senseinformation about an environment condition at or near an asset. Theexternal sensor can be configured for data communication with the cloudcomputing system 120 which can be configured to use the sensorinformation in its analysis of one or more assets. Furthermore, anoperation of the one or more assets 110 may be enhanced or otherwisecontrolled by the cloud computing system 120 and/or the user device 130.

The cloud computing system 120 may include a Software-DefinedInfrastructure (SDI) that serves as an abstraction layer above anyspecified hardware, such as to enable a data center to evolve over timewith minimal disruption to overlying applications. The SDI enables ashared infrastructure with policy-based provisioning to facilitatedynamic automation, and enables SLA mappings to underlyinginfrastructure. This configuration can be useful when an applicationrequires an underlying hardware configuration. The provisioningmanagement and pooling of resources can be done at a granular level,thus allowing optimal resource allocation. In addition, the cloudcomputing system 120 may be based on Cloud Foundry (CF), an open sourcePaaS that supports multiple developer frameworks and an ecosystem ofapplication services. Cloud Foundry can make it faster and easier forapplication developers to build, test, deploy, and scale applications.Developers thus gain access to the vibrant CF ecosystem and anever-growing library of CF services. Additionally, because it is opensource, CF can be customized for IIoT workloads.

The cloud computing system 120 can include a data services module thatcan facilitate application development. For example, the data servicesmodule can enable developers to bring data into the cloud computingsystem 120 and to make such data available for various applications,such as applications that execute at the cloud, at a machine module, orat an asset or other location. In an example, the data services modulecan be configured to cleanse, merge, or map data before ultimatelystoring it in an appropriate data store, for example, at the cloudcomputing system 120.

FIG. 2 illustrates an application hub user interface 200 in accordancewith an example embodiment. For example, software for controlling andmanaging an instance of the application hub user interface 200 may bedeployed on the cloud computing system 120 and accessed by user device130 shown in FIG. 1. Referring to FIG. 2, during an initial sign-onsession, a user may be prompted to enter authentication information suchas username, password, security credentials, and the like. Here, thesign-on session may be performed by an identity provider mechanism inthe background of the application hub user interface 200. The user maybe redirected to the identity provider and once authenticated, the usermay be returned to the application hub user interface 200. As anotherexample, the authentication process may take place via the applicationhub user interface 200. Once authenticated, the application hub userinterface 200 may be displayed to a user on the user's device. Here, aplurality of microapps are each represented by a plurality of navigationoptions (e.g., microapp #1 is represented by navigation option 211,microapp #2 is represented by navigation option 212, etc.) included in anavigation menu 210 that is positioned within the application hub userinterface 200.

The instance of the application hub may identify a plurality ofmicroapps (e.g., microapps 1-8) on the cloud platform authorized for useby the user and request location information of the plurality ofapplications from the cloud platform. For example, the requests may beprovided to and processed by a configuration service of the applicationhub and the location information may include a path in the cloudplatform associated with a running instance of a microapp. In response,the application hub may receive navigation information for each of theplurality of applications from the microapps residing within the cloudplatform. The navigation information for each microapp may includelocation information of a running instance of the microapp within thecloud platform. For example, the location may include a URL or otheraddress information of the microapp host. The application hub maygenerate the navigation menu 210 including the plurality of navigationoptions based on the received navigation information. In this example,each navigation option, when selected, is configured to navigate to arunning instance of a respective application.

In addition, the configuration service may also provide customizedbehavior information and/or customized script information for the user.For example, the configuration service may provide the application hubwith a URL or other location of tenant-specific scripts (e.g.,JavaScript), libraries, etc., which are to be added to the plurality ofmicroapps to customize a behavior thereof. The configuration service mayalso provide customized theming information for the user. For example,the configuration service may provide the application hub with a URL orother location of tenant-specific theming data which can be added to thedisplay of the application hub user interface and the individualmicroapps to customize a look and feel of the application hub userinterface.

For multiple microapps to integrate well in a single application hub itis beneficial for the user to be able to navigate between the microapps.There are multiple ways in which a user may navigate between microapps,and they include, the user selecting a link/navigation option in theglobal navigation menu, the user clicking a link/option within amicroapp which links directly to a location in another microapp, theuser taking an action in one microapp, the end result of which redirectsthe user to a location in another microapp, and the like. The globalnavigation menu is composed by the application hub configuration serviceby asking each microapp for its navigation links and combining theresult into a coherent whole. Each application is only responsible forits own navigation.

In FIG. 2, microapp #2 corresponding to navigation option 212 iscurrently selected and displayed via display window 220 which provides aviewing area for running instances of open microapps. For example, thedisplay of the running instance of microapp #2 may include analyticaldata or other information. In addition to displayed data, microapp #2may have a navigation option 221 which navigates to microapp #5 or someother event that can trigger microapp #5. Here, the user may selectnavigation option 221 embedded within the display of the runninginstance of microapp #2. In response, the application hub may close aview of the running instance of microapp #2 in the display window 220and open a display of a running instance of microapp #5 in the displaywindow 220. Accordingly, the application hub user interface may navigatebetween running instances of microapps with a simple click of a buttonor selection of an option.

According to various embodiments, any individual microapp instance maybe included in multiple application hubs, and each of those applicationhubs may be composed of a different set of microapps. Therefore, adeveloper that wishes to link to another microapp needs to determinewhether that other microapp is present in that application hub, and whatURL to use for the link. An application hub provides a mechanism toaccomplish this. When the user's browser loads a page from theapplication hub, that page may contain a JavaScript object with a“routes” attribute, mapping every microapp's ID to its path in thatapplication hub. For example:

“routes”: {  “ma1”: “/cases”,  “ma2”: “/alerts” }

In this example, a developer working on the “ma1” microapp that wants toprovide a link to the “ma2” microapp may examine the routes object todetermine if the “ma2” microapp is present, and prepend the value of the“ma2” route (/alerts) to their link in order to link the two microapps.

FIG. 3 illustrates an application hub architecture 300 in accordancewith an example embodiment. In this example, a user device establishesconnection with an application hub instance 310 which could be hosted bythe cloud computing system 120 shown in FIG. 1, or another host deviceor server. Referring to FIG. 3, the architecture 300 includes an app hublayer 310, a microapps layer 320, and a microservices layer 330. Itshould be appreciated that this architecture 300 is merely an example,and may include additional or different layers. The hub layer includesinstances of application hubs which each have a respective address(e.g., a URL) within a cloud or other type computing environment. Inthis example, a first running instance of an application hub 310 has afirst address. The microapps layer includes instances of runningsoftware applications (microapps) which may be accessed by the instanceof the application hub 310 running in the app hub layer. Similar to theapplication hub, a running instance of a microapp 320 may also have anaddress associated therewith. For example, a microapp address may bebased on the path address of a corresponding application hub and a pathof the respective microapp. Furthermore, each microapp may access one ormore services 330 in the microservices layer. The services also includean address associated therewith which may be based on the path addressof a corresponding application hub and microapp along the path to therespective service.

An instance of an application hub may be access by multiple users whicheach have access to their own respective set of microapps. Here, themicroapps may be distinct software applications developed independentlyfrom one another by different vendors. The application hub instance 310may encapsulate running instances of a group or a set of microapps whicha particular user has access. To determine which microapps (e.g., asubset of microapps) which the user may access, during a login process,a user is redirected from the application hub 310 to the identityprovider service module 312 for an authentication process. The identityprovider service module 312 may be a User Account and Authentication(UAA) server for Cloud Foundry. The UAA server may issue tokens forapplications included within the cloud platform. As another example, theidentity provider service module may be another type of identityprovider/verifier such as Facebook, Twitter, or the like.

The identity provider service module 312 may provide the user with alogin page, and the user may enter their information and transmit thelogin information to the identity provider service module 312. Theidentity provider service module 312 may authenticate the user for theapplication hub based on the input login information and provide noticeof successful login to the application hub instance 310. The applicationhub 310 may retrieve a token corresponding to the user from a databasemodule such as an open source Redis data structure storage and accessservice. The configuration services module 314 receives the users tokenfrom the application hub 310, and in response, returns the names of allapplications authorized for use by the user, navigation hierarchyinformation for the applications, and other details for that user. Theconfiguration services module 314 may query individual microapps toretrieve their navigation information. This navigation information isused to generate the navigation menu of the application hub userinterface. Also, one or more sub-navigation menus may be generated basedon the navigation menu and various services within each microapp.

Furthermore, according to various embodiments, the configuration service314 may also provide the application hub instance 310 with a location(e.g., a URL, URI, address, etc.) which identifies custom scripts 316(e.g., JavaScript, code, libraries, etc.) which the can be used by theapp hub instance 310 to customize a behavior of the microapps 320authorized for use by the user/tenant. For example, the custom scripts316 may be a JavaScript code embedded within an HTML file or page at aURL such that it is accessible by the app hub instance 310 via a publicor private network. Here, the app hub instance 310 may acquire thecustom script or an array of custom scripts by checking for the URL inthe configuration service 314 and apply the custom script to runninginstances of the microapps 320 which are displayed via an applicationhub user interface of the app hub instance 310. If, however, the customscript is not included in the configuration service 314, the app hubinstance 310 may load standard scripts and behavior for the microapps320.

According to various embodiments, the custom scripts 316 may include atenant-specific library which the app hub instance 310 can makeavailable across each of the running instances of the microapps 320. Insome embodiments, the microapps 320 may be independently developedsoftware applications developed by different vendors. Therefore, thecustom script 316 may enable the running instances of the plurality ofindependently developed software applications to communicate with eachother via a notification platform. In addition to custom scripts, orinstead of custom scripts, the app hub instance 310 may implementstandard scripts used for all tenants of the app hub into the microapps320. The scripts may be implemented within the microapps while they arerunning within the application hub user interface.

As another example, the configuration service 314 may provide the apphub instance 310 with a location (e.g., a URL, URI, etc.) of customtheming 318 to be used for customizing a look and a feel of themicroapps 320 and the user interface of the app hub instance 310. Herethe application hub user interface may be defined by several files(e.g., JavaScript, handlebar, etc.), which are loaded during startup.During a loading of a non-customized app hub user interface, the app hubinstance 310 may load a standard handlebar file for all tenants andtenant users that contains the standard logic and styling used fordisplaying and navigating between microapps from the custom theming 318.However, the example embodiments provide theming features which enablesdevelopers to specify a different handlebars file for customizedtheming. Rather than requiring a user to manually manipulate the stylefrom within a microapp, or loading CSS classes that override standardfiles used by the app hub instance 310, the developer may provide anaddress within the configuration service 314 that provides their owncomplete user interface definition for styling included at a themingfile 318 which is accessible via a URL or other address. They can startwith the reference and go from modifying colors and logos etc. toproviding a completely different interface. Here, instead of loadingfixed handlebars file for all tenants, a check is performed by the apphub instance 310 within the configuration service 314 and a remotelyhosted handlebars file may be loaded instead (if specified).

The composability of the application hub allows the microapps 320 to bedesigned with different programming languages and libraries. Eachapplication hub may have a configuration service that controls andmanages navigation information between the application hub, themicroapps, and the services. When a product owner adds a microapp to anapplication hub, they are adding a pointer to a configuration service ofthe application hub. Here, the pointer points to a running instance ofthe microapp. For example, when a user logs into the application hubinstance, the following may occur:

-   -   1) a configuration service of a corresponding application hub        queries a list of microapps authorized for use by that        particular user;    -   2) the configuration service queries sub-navigation items of        each of the microapps for their navigation information, combines        the navigation information from the sub-navigation items into a        single object, and returns that object to the application hub;    -   3) the application hub requests the content template (e.g.,        custom scripts and/or standard scripts) from the current        microapp (determined by the URL path, or a default if no path        was specified in the request), wraps the template in its own        markup, along with the combined navigation information retrieved        in the previous step, and returns the document to the user's web        browser;    -   4) the application hub request any custom scripts to be used to        modify the behavior of microapps accessible by the user; and    -   5) the application hub establishes a reverse proxy from the        microapp's path to the running instance, allowing further        requests to be handled by the microapp itself.

According to various embodiments, by querying the microapps for theirnavigation information, the configuration service can detect a locationof each microapp within the cloud computing environment. Furthermore,when the user interface is generated, the navigation information may beincluded as links or options in a global navigation menu that can beselected by a user via the user interface. In response to selecting anavigation link or option, the user interface may access a runninginstance of a corresponding microapp associated with the navigation linkand display the running instance via the user interface.

Because an application hub is composed of running microapp instances,any particular microapp may be used by multiple application hubs, atonce. Furthermore, if that microapp is redeployed, all application hubswhich contain it will immediately reflect any new features or fixes.Furthermore, an application hub provides composability to the microappsassociated therewith. As projects grow in complexity, they may be splitinto separate microapps thus keeping codebases small, and improvingrefactorability and testability. In this example, a plurality ofmicroapps may be related with each other and operate together as a wholewith a common navigation between them. Furthermore, only one microappmay be loaded into the browser at a time, and as a result, theapplication hub user interface performance may also be improved over amonolithic application.

As a result of the composability offered by the application hub,development teams are no longer necessarily bound to an applicationframework or set of dependencies and they are free to use the userinterface technologies which meet their needs. Each microapp may bedeveloped using its own technologies, independent from other microappsincluded in the same application hub. In some cases, the differenttechnologies may be different programming languages. As another example,the different technologies may be the same programming language but adifferent JavaScript library or a different framework instead of adifferent programming language. In addition, existing applications canbe easily modified to work in an application hub environment.Development teams are no longer necessarily tied to a common releaseschedule and they are free to deploy and scale their applicationsindependently. Furthermore, creating an application hub is simple, and aproduct owner may create as many as they like. Composability allows forcreative thinking and experimentation when it comes to the design ofsoftware products.

FIG. 4 illustrates a method 400 for customizing a plurality ofapplications via an application hub interface in accordance with anexample embodiment. For example, the method 400 may be performed by anapplication hub hosted by a cloud computing system 120 shown in FIG. 1,a server, a database, or the like. Referring to FIG. 4, in 410 themethod includes receiving a request to load an application hub userinterface associated with running instances of a plurality of softwareapplications. For example, the request may be received from a tenant(e.g., a developer or other user). The request may be an initial requestto load a display of the application hub user interface on a screen of acomputing device of the user. The request may be received by anapplication hub instance executing on a host device. The application hubinstance may authenticate the user prior, during, or after receiving therequest in 410. In response to authenticating the user, the applicationhub instance may access a configuration file that is tenant specific andwhich includes a location (e.g., an address, a URL, etc.) wheretenant-specific behavior customization information such as customizedscripts, libraries, themes, and the like, are stored. The configurationfile may also include tenant-specific theming customization informationfor customizing a look and feel of the running instances of theplurality of applications.

In 420, the method includes determining at least one script to be usedto provide a common library to or to customize a behavior of the runninginstances of the plurality of software applications. For example, thescript may be acquired from the location included in the tenant-specificbehavior customization information. Here, the acquiring may includeidentifying a script or an array of scripts from the tenant-specificbehavior customization information included in a file such as aJavaScript file, or the like, accessed at the address provided for, andwhich are to be used to customize a behavior of a plurality of distinctmicroapps accessible to the tenant. In some embodiments, the behaviorcustomization information may be added by a developer of the tenantduring an initial development of the application hub instance. Asanother example, the behavior customization information may be enteredby a developer through a separate user interface during development ofthe application hub instance. For example, the developer may add the URLto configuration code of the application hub instance, it may enter theURL through a field of the separate user interface, and the like.

In some embodiments, the running instances of the plurality of softwareapplications include running instances of a plurality of independentlydeveloped software applications developed by different and distinctvendors. In this example, the at least one script may include atenant-specific library that can be made available across the runninginstances of the distinct software applications which the tenant isauthorized to access. For example, the at least one script may enablethe running instances of the plurality of independently developed anddistinct software applications to communicate with each other via acommon notification platform.

In 430, the method further includes adding the at least one script toeach of the running instances of the plurality of software applicationsvia the application hub user interface, and, in 440, displaying theapplication hub user interface which provides access to the customizedrunning instances of the plurality of software applications. Forexample, the adding may cause a tenant-specific library to be madeavailable across each of the running instances of the plurality ofsoftware applications. In some embodiments, the adding may includeadding the at least one customized script provided by the tenant and aplurality of other predefined scripts that are standard for all tenantsof the application hub user interface to the running instances of theplurality of software applications. In some embodiments, the adding mayinclude simultaneously incorporating at least one customized script intothe running instances of each of the plurality of software applicationsvia the application hub user interface. Although not shown in FIG. 4,the method may further include determining an alternate user interface(or theme) to be used which provides a new look or a modified look ofthe running instances of the plurality of software applications, andapplying that user interface to the running instances of the pluralityof software applications via the application hub user interface.

FIG. 5 illustrates a computing system 500 for customizing a plurality ofapplications via an application hub interface in accordance with anexample embodiment. For example, the computing system 500 may be thecloud computing system 120 or an instance thereof, shown in FIG. 1, adatabase connected to the cloud, a user device connected to the cloud,or another type of device. Also, the computing system 500 may performthe method 400 of FIG. 4. Referring to FIG. 5, the computing system 500includes a network interface 510, a processor 520, an output 530, and astorage device 540 such as a memory. Although not shown in FIG. 5, thecomputing system 500 may include other components such as a display, aninput unit, a receiver/transmitter, and the like.

The network interface 510 may transmit and receive data over a networksuch as the Internet, a private network, a public network, and the like.The network interface 510 may be a wireless interface, a wiredinterface, or a combination thereof. The processor 520 may include oneor more processing devices each including one or more processing cores.In some examples, the processor 520 is a multicore processor or aplurality of multicore processors. Also, the processor 520 may be fixedor it may be reconfigurable. The output 530 may output data to anembedded display of the computing system 500, an externally connecteddisplay, a display connected to the cloud, another device, and the like.The storage device 540 is not limited to a particular storage device andmay include any known memory device such as RAM, ROM, hard disk, and thelike, and may or may not be included within the cloud environment.

The storage 540 may store one or more software modules for executing themethod 400 of FIG. 4, and the software modules may be executed by theprocessor 520. According to various embodiments, the processor 520 mayreceive a request to load an application hub user interface associatedwith running instances of a plurality of software applications. Therequest may be received from a tenant (e.g., user or developer). Theprocessor 520 may authenticate the user via an authentication protocoland determine tenant-specific configuration settings for the user basedon information provided during the authentication. For example, theauthentication may provide the application hub instance with access to aconfiguration file that is tenant-specific and which includes addressesor other settings of customized scripts which may be used to customizeor otherwise modify a behavior of a plurality of microapps, andcustomized themes which may be used to customize a look and feel of theplurality of microapps.

The processor 520 may determine at least one script to be used tocustomize a behavior of the running instances of the plurality ofsoftware applications. For example, the processor 520 may determine theat least one script to be used based on tenant-specific configurationinformation included in a file that is associated with the tenant andthat is accessed by the application hub. The at least one script mayinclude a tenant-specific library, and the adding by the processor 520may cause the tenant-specific library to be made available across eachof the running instances of the plurality of software applications.Here, the running instances of the plurality of software applicationsmay include running instances of a plurality of independently developedand distinct software applications developed by different vendors. Asone example, the at least one customized script may enable the runninginstances of the plurality of independently developed softwareapplications to communicate with each other via a common notificationplatform.

The processor 520 may add the at least one script to each of the runninginstances of the plurality of software applications via the applicationhub user interface, and the output 530 may display the application hubuser interface on a client device which provides access to thecustomized running instances of the plurality of software applications.For example, the processor 520 may add the at least one script incombination with a plurality of other standard predefined scripts of theapplication hub user interface which are common to all tenants to therunning instances of the plurality of software applications. In someembodiments, the processor 520 may simultaneously incorporate the atleast one script into the running instances of each of the plurality ofsoftware applications via the application hub user interface. In someembodiments, the processor 520 is further configured to determine atleast one theme to be used to customize a look of the running instancesof the plurality of software applications, and add the at least onetheme to the running instances of the plurality of software applicationsvia the application hub user interface.

As will be appreciated based on the foregoing specification, theabove-described examples of the disclosure may be implemented usingcomputer programming or engineering techniques including computersoftware, firmware, hardware or any combination or subset thereof. Anysuch resulting program, having computer-readable code, may be embodiedor provided within one or more non-transitory computer readable media,thereby making a computer program product, i.e., an article ofmanufacture, according to the discussed examples of the disclosure. Forexample, the non-transitory computer-readable media may be, but is notlimited to, a fixed drive, diskette, optical disk, magnetic tape, flashmemory, semiconductor memory such as read-only memory (ROM), and/or anytransmitting/receiving medium such as the Internet, cloud storage, theinternet of things, or other communication network or link. The articleof manufacture containing the computer code may be made and/or used byexecuting the code directly from one medium, by copying the code fromone medium to another medium, or by transmitting the code over anetwork.

The computer programs (also referred to as programs, software, softwareapplications, “apps”, or code) may include machine instructions for aprogrammable processor, and may be implemented in a high-levelprocedural and/or object-oriented programming language, and/or inassembly/machine language. As used herein, the terms “machine-readablemedium” and “computer-readable medium” refer to any computer programproduct, apparatus, cloud storage, internet of things, and/or device(e.g., magnetic discs, optical disks, memory, programmable logic devices(PLDs)) used to provide machine instructions and/or data to aprogrammable processor, including a machine-readable medium thatreceives machine instructions as a machine-readable signal. The“machine-readable medium” and “computer-readable medium,” however, donot include transitory signals. The term “machine-readable signal”refers to any signal that may be used to provide machine instructionsand/or any other kind of data to a programmable processor.

The above descriptions and illustrations of processes herein should notbe considered to imply a fixed order for performing the process steps.Rather, the process steps may be performed in any order that ispracticable, including simultaneous performance of at least some steps.Although the disclosure has been described in connection with specificexamples, it should be understood that various changes, substitutions,and alterations apparent to those skilled in the art can be made to thedisclosed embodiments without departing from the spirit and scope of thedisclosure as set forth in the appended claims.

What is claimed is:
 1. A computer-implemented method comprising:receiving a request to load an application hub interface associated withrunning instances of a plurality of software applications; determiningat least one script to be used to customize a behavior of the runninginstances of the plurality of software applications; adding the at leastone script to each of the running instances of the plurality of softwareapplications via the application hub interface; and displaying a userinterface associated with the application hub interface which providesaccess to the customized running instances of the plurality of softwareapplications.
 2. The method of claim 1, wherein the determiningcomprises determining the at least one script to be used based ontenant-specific configuration information included in a file that isassociated with the tenant.
 3. The method of claim 1, wherein the atleast one script comprises a tenant-specific library, and the adding ofthe at least one script causes the tenant-specific library to be madeavailable across each of the running instances of the plurality ofsoftware applications.
 4. The method of claim 1, wherein the runninginstances of the plurality of software applications comprise runninginstances of a plurality of independently developed softwareapplications developed by different vendors.
 5. The method of claim 4,wherein the at least one script enables the running instances of theplurality of independently developed software applications tocommunicate with each other via a notification platform.
 6. The methodof claim 1, wherein the adding comprises adding the at least one scriptand a plurality of other predefined scripts of the application hub userinterface to the running instances of the plurality of softwareapplications.
 7. The method of claim 1, wherein the adding comprisessimultaneously incorporating the at least one script into the runninginstances of each of the plurality of software applications via theapplication hub user interface.
 8. The method of claim 1, wherein themethod further comprises determining at least one theme to be used tocustomize a look of the running instances of the plurality of softwareapplications, and changing a display of the user interface based on theat least one theme.
 9. A computing system comprising: a memory storingone or more software modules; and a processor configured to execute theone or more software modules, wherein when executed, the one or moreexecuted software modules cause the processor to: receive a request toload an application hub interface associated with running instances of aplurality of software applications; determine at least one script to beused to customize a behavior of the running instances of the pluralityof software applications; add the at least one script to each of therunning instances of the plurality of software applications via theapplication hub interface; and display a user interface associated withthe application hub interface which provides access to the customizedrunning instances of the plurality of software applications.
 10. Thecomputing system of claim 9, wherein the processor is configured todetermine the at least one script to be used based on tenant-specificconfiguration information included in a file that is associated with thetenant.
 11. The computing system of claim 9, wherein the at least onescript comprises a tenant-specific library, and the adding of the atleast one script by the processor causes the tenant-specific library tobe made available across each of the running instances of the pluralityof software applications.
 12. The computing system of claim 9, whereinthe running instances of the plurality of software applications compriserunning instances of a plurality of independently developed softwareapplications developed by different vendors.
 13. The computing system ofclaim 12, wherein the at least one script enables the running instancesof the plurality of independently developed software applications tocommunicate with each other via a notification platform.
 14. Thecomputing system of claim 9, wherein the processor is configured to addthe at least one script and a plurality of other predefined scripts ofthe application hub user interface to the running instances of theplurality of software applications.
 15. The computing system of claim 9,wherein the processor is configured to simultaneously incorporate the atleast one script into the running instances of each of the plurality ofsoftware applications via the application hub user interface.
 16. Thecomputing system of claim 9, wherein the processor is further configuredto determine at least one theme to be used to customize a look of therunning instances of the plurality of software applications, and changea display of the user interface based on the at least one theme.
 17. Anon-transitory computer readable medium having stored thereininstructions that when executed cause a computer to perform a method forcontrolling an application hub user interface associated with a cloudplatform, the method comprising: receiving a request to load anapplication hub interface associated with running instances of aplurality of software applications; determining at least one script tobe used to customize a behavior of the running instances of theplurality of software applications; adding the at least one script toeach of the running instances of the plurality of software applicationsvia the application hub interface; and displaying a user interfaceassociated with the application hub interface which provides access tothe customized running instances of the plurality of softwareapplications.
 18. The non-transitory computer readable medium of claim17, wherein the determining comprises determining the at least onescript to be used based on tenant-specific configuration informationincluded in a file that is associated with the tenant.
 19. Thenon-transitory computer readable medium of claim 17, wherein the atleast one script comprises a tenant-specific library, and the adding ofthe at least one script causes the tenant-specific library to be madeavailable across each of the running instances of the plurality ofsoftware applications.
 20. The non-transitory compute readable medium ofclaim 17, wherein the at least one script enables running instances of aplurality of independently developed software applications tocommunicate with each other via a notification platform.